package com.payment.system.mapper;

import com.payment.system.domain.OrderGg;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * 光谷订单对账 数据层
 *
 * @author payment
 * @date 2019-09-18
 */
public interface OrderGgMapper {
    /**
     * 查询光谷订单对账信息
     *
     * @param id 光谷订单对账ID
     * @return 光谷订单对账信息
     */
    public OrderGg selectOrderGgById(Long id);

    /**
     * 查询光谷订单对账列表
     *
     * @param orderGg 光谷订单对账信息
     * @return 光谷订单对账集合
     */
    public List<OrderGg> selectOrderGgList(OrderGg orderGg);

    /**
     * 新增光谷订单对账
     *
     * @param orderGg 光谷订单对账信息
     * @return 结果
     */
    public int insertOrderGg(OrderGg orderGg);

    /**
     * 修改光谷订单对账
     *
     * @param orderGg 光谷订单对账信息
     * @return 结果
     */
    public int updateOrderGg(OrderGg orderGg);

    /**
     * 删除光谷订单对账
     *
     * @param id 光谷订单对账ID
     * @return 结果
     */
    public int deleteOrderGgById(Long id);

    /**
     * 批量删除光谷订单对账
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteOrderGgByIds(String[] ids);

    /**
     * 删除订单
     *
     * @param uploadTime 插入时间
     * @return
     */
    int deleteOrderGuangGuByDateTime(@Param("uploadTime") String uploadTime);

    /**
     * 删除订单
     *
     * @param uploadTime 插入时间
     * @param pro        笔数费
     * @param payRate    交易费率
     * @return
     */
    int deleteOrderGgByInsertTimeAndProAndPayRate(@Param("uploadTime") String uploadTime, @Param("pro") BigDecimal pro, @Param("payRate") BigDecimal payRate);

    List<OrderGg> selectOrderGgListByInsertTime(@Param("insertTime") String insertTime);

    /**
     * 查询成功的消费订单
     *
     * @return
     */
    List<OrderGg> selectOrderGgListByUserIdAndPayRate(@Param("insertTime") String insertTime,@Param("bankNumber")String bankNumber, @Param("acqUserId") String acqUserId, @Param("payRate") BigDecimal payRate);

    /**
     * 查询成功的出款订单
     *
     * @return
     */
    List<OrderGg> selectOrderGgListByUserIdAndPro(@Param("insertTime") String insertTime,@Param("bankNumber") String bankNumber,@Param("acqUserId") String acqUserId, @Param("pro") BigDecimal pro);

    /**
     * 用户id，卡号进行查询订单
     */
    List<OrderGg> selectOrderListByBankNumber(@Param("insertTime")String insertTime,@Param("acqUserId") String userId, @Param("userName") String userName, @Param("bankNumber") String bankNumber);
}